# ————————————————————集合set————————————————————————
# 创建集合使用{}或set，但创建空集合只能使用set()，因为{}用来创建空字典
# 集合可以去掉重复数据
# 集合数据无序，不支持下标
s4 = set()
print(type(s4))
s5 = {}
print(type(s5))
s2 = {10, 30, 20, 10, 20, 30}
print(s2)
s3 = set('abcdefg')
print(s3)

# add():添加数据
# update():追加的数据是序列

# remove():删除集合中的指定数据，如果数据不存在则报错
# discard():删除集合中的指定数据，如果数据不存在也不会报错
# pop():随机删除集合中的某个数据，并返回这个数据

# in:判断数据在集合序列
# not in:判断数据不在集合序列

# ——————————————————————————元组tuple————————————————————————————
# 元组：定义元组使用小括号，且逗号隔开各个数据，数据可以是不同的数据类型
# 一个元组中可存储多个数据，且元组内的数据不可修改
# 如果定义的元组只有一个数据，那么这个数据后面也要添加逗号，否则数据类型为这个唯一数据的数据类型

# 元组不支持修改，只支持查找
# 按下标查找
# index():查找的数据不存在则报错、count()、len()
# 元组内的直接数据如果修改则立即报错
# 但如果元组里面有列表，修改列表中的数据则是支持的

# ——————————————————————————列表list———————————————————————————————
# 列表可一次性存储多个数据，且数据可为不同类型 [数据1，数据2，数据3，……]
# 增、删、改、查
# index():查找的数据不存在则报错、count()、len()
# in:判断数据在集合序列 not in:判断数据不在集合序列

# append():列表结尾追加数据 列表序列.append(数据)  （适用于单个数据添加到列表尾部）
# append()追加的数据可以是一个序列，追加整个序列到列表
# extend():列表结尾追加数据，如果数据是一个序列，则这个序列的数据逐一添加到列表
# 列表序列.extend(数据)   （适用于多个数据添加到列表尾部）
# insert():指定位置新增数据
# 列表序列.insert(插入位置，新增数据)

# del 目标   1、删除列表（列表名） 2、删除指定数据（列表名+下标）
# pop():删除指定下标的数据（默认为最后一个），并返回该数据
# 列表序列.pop(下标)
# remove():移除列表中某个数据的第一个匹配项 列表序列.remove(数据)
# clear():清空列表

# 通过下标进行修改
# 逆置：reverse()
# 排序：sort() 列表序列.sort(key=None, reverse=False)
# reverse表示排序规则，=True降序，=False升序
# 复制:copy()

# 列表的循环遍历 依次打印出列表中的各个数据
# while
list1 = [1, 5, 8, 7, 6]
i = 0
while i < len(list1):
    print(list1[i])
    i += 1
# for
for i in list1:
    print(i)

# 列表的嵌套 一个列表里包含了其他的子列表

# ————————————————————————————————字典dictionary————————————————————————————
# 字典里的数据以键值对的形式出现，字典数据和数据顺序无关，即字典不支持下标，后期无论数据如何变化，只需按照对应的键的名字查找数据即可
# 符号为大括号 各个键值对之间用逗号隔开 冒号前为键（key） 冒号后为值（value）分别简称为 k、v

# 增:字典序列[key] = 值 字典为可变类型
# del()/del 删除字典或指定键值对
# clear():清空字典

# 改:字典序列[key] = 值
# 查:key值查找 如存在则返回对应的值，否则则报错
# get(): 字典序列.get(key，默认值) 如果当前查找的key不存在则返回第二个参数（默认值），如果省略第二个参数，则返回None
# keys()、values()、items():输出键值、值、键值对

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key in dict1.keys():
    print(key)

for value in dict1.values():
    print(value)

for item in dict1.items():
    print(item)

for key, value in dict1.items():
    print(f'{key}= {value}')

# 通过{}或dict()生成空字典
# 字典、集合不支持下标
